#include "BlockQueue.hpp"
// 生产者线程
void *Protected(void *arg)
{
    BlockQueue<int> *td = (BlockQueue<int> *)arg;
    int send_data = 100;
    while (1)
    {
        td->push(send_data);
        cout << "生产一个数据:" << send_data-- << endl;
    }
    return nullptr;
}
// 消费者线程
void *Consumer(void *arg)
{
    BlockQueue<int> *td = (BlockQueue<int> *)arg;
    while (1)
    {
        int get_data = 0;
        td->pop(&get_data);
        cout << "消费一个数据:" << get_data << endl;
        sleep(1);
    }
    return nullptr;
}
int main()
{
    BlockQueue<int> *bq = new BlockQueue<int>();
    pthread_t producer_tid;
    pthread_t consumer_tid;
    // 创建生产者和消费者线程，让他们共享一个阻塞队列bq。
    pthread_create(&producer_tid, nullptr, Protected, (void *)bq);
    pthread_create(&consumer_tid, nullptr, Consumer, (void *)bq);

    sleep(5);

    pthread_join(producer_tid, nullptr);
    pthread_join(consumer_tid, nullptr);
    delete bq;

    return 0;
}